home *** CD-ROM | disk | FTP | other *** search
- PROGRAMM
- ARROWFIX v1.5 [18.10.1993] -
- Patches rund um die Scrollroutinen von GEM-AES und GEM-Desktop
-
- BESCHREIBUNG
- Die Scrollroutinen im GEM wurde im Laufe der TOS-Versionen einigen
- Änderungen unterzogen um das System sicherer und schneller zu
- machen. Leider haben sich dabei immer wieder Fehler eingeschlichen,
- die mit ARROWFIX behoben werden können.
-
- Die einfachste Scrollimplementierung findet sich, wen wundert es,
- im TOS 1.00. In diesem TOS hatten die Scrollpfeile der Fenster
- noch keinen AUTO-Repeat und es war sehr mühselig zu scrollen.
- Dies wurde im TOS 1.02 geändert, dabei jedoch ein konzeptionelles
- Problem im GEM übersehen, was dazu führt, daß in einigen Programmen,
- bei einem Einzelklick auf einen Scrollpfeil, zweimal gescrollt
- wird (1). Dieser Fall tritt genau dann ein, wenn weder die Haupt-
- applikation noch eines der installierten Accessories auf einen
- Doppelklick wartet. In der Praxis fällt das Problem in TOS 1.02
- jedoch nicht auf, da ein anderer 'echter' Fehler seine Wirkung
- aufhebt. Als dieser Fehler in TOS 1.04 korrigiert wurde, schlug
- das Problem voll durch und es wurde eine Verzögerungsschleife ein-
- gebaut, die auch in den meisten Situationen Abhilfe schafft, aber
- leider nicht immer. Bis zur aktuellen GEM Version 3.40 in TOS 4.04
- hat sich daran nichts mehr geändert.
-
- In TOS 2.x/3.x wurde das alte GEM-Desktop durch NEWDESK ersetzt.
- Da den Entwicklern die Scrollgeschwindigkeit in den Fenstern des
- Desktops wohl zu langsam war, benutzten sie einen 'schmutzigen'
- Trick zur Beschleunigung (dabei wird so lange gescrollt, wie eine
- beliebige Maustaste gedrückt ist)(2). Durch diesen Trick wird der
- Bildschirmmanager kalt gestellt und es läuft immer eine Scroll-
- meldung nach (auch so manches Programm geht leider so vor).
- Ab GEM 3.20 (TOS 2.06/3.06) wurde das Versenden der Scrollmeldungen
- im Bildschirmmanager beschleunigt. Dies wurde erreicht, in dem ein
- 'Bypass' zwischen Bildschirmmanager und der Applikation gelegt
- wurde. Scrollmeldungen können somit teilweise den langen Weg durch
- den Nachrichtenmanager des GEM vermeiden. Diese Änderung bescherte
- leider auch eine Reihe von Fehlern. Nachrichten, die den Bypass
- benutzen, haben eine falsche Nachrichtenlänge (3) und überholen
- andere Nachrichten (4), die an die Applikation geschickt werden.
- Außerdem verschickt der Bildschirmmanager manchmal Nachrichten
- über den Bypass, obwohl er die alte Methode hätte benutzen müssen.
- Das führt dazu, daß die Nachricht hängen bleibt (5) und erst nach
- einer anderen Aktion durch den Anwender ausgeführt wird.
-
- In den TOS Versionen 4.00 bis 4.04 wurden die Fehler (3) und (4)
- behoben und der Scrolltrick (2) entfernt (leider ohne ihn durch
- eine saubere Lösung zu ersetzen, wodurch das Scrollen in Desktop-
- Fenstern bis zu 50% langsamer ist).
-
- Ein weiterer Fehler, der eigentlich nichts mit dem Scrollen zu tun
- hat, aber von ARROWFIX behoben wird, hat bisher alle TOS Versionen
- überlebt. In bestimmten Situation kann es passieren, daß einer
- Applikation ein Mausklick bzw. ein Rechteckereignis gemeldet wird,
- obwohl dem Bildschirmmanager die Maus zugeordnet ist (6) (z.B.
- wenn die Applikation einen Timerevent erhält, während man ein
- Fenster verschiebt).
-
- Nach der Beschreibung der TOS-Probleme jetzt die Möglichkeiten
- sie mit ARROWFIX los zu werden:
-
- Die erste Möglichkeit erlaubt es leider nur die Probleme (1) und
- (3) (Doppelereignis und Überlänge) zu lösen. ARROWFIX.PRG muß
- dazu in den Ordner \AUTO ihres Bootlaufwerks kopiert werden. Beim
- Start des Rechners installiert sich ARROWFIX dann in den Aufrufen
- einiger Systemfunktionen.
-
- Für die zweite Möglichkeit ist ein direkter Eingriff in den
- Programmcode des GEM notwendig. ARROWFIX beseitigt dann die
- obigen Fehler, implementiert eine sauberere und schnelle Scroll-
- routine im GEM-Desktop und erlaubt es schließlich die Ansprech-
- zeit bis zur ersten Wiederholung einer Scrollmeldung einzustellen.
-
- Die Unterschiede in der Implementierung des AUTO-Repeats der
- Scrollpfeile soll das folgende Diagramm beschreiben:
-
- normales TOS ARROWFIX modifiziertes TOS
-
- Klick Klick
- | Doppelklickwartezeit |
- | bzw. 0, falls keine App. | Doppelklickwartezeit
- v auf Doppelklick wartet v
- --- 1. Scrollmeldung
- | Doppelklickwartezeit |
- | (erst ab TOS 1.04) | *1*
- v v
- 1. Scrollmeldung 2. Scrollmeldung
- | Verarbeitungszeit des | Verarbeitungszeit des
- | Programms | Programms
- v v
- 2. Scrollmeldung 3. Scrollmeldung
-
- *1* Maximum aus der Ansprechzeit (einstellbar von 0 ab in
- 0.125 Sekunden Schritten, siehe KONFIGURATION) und der
- Verarbeitungszeit des Programms
- Die Doppelklickwartezeit kann über das Kontrollfeld ein-
- gestellt werden. Möglich sind hier Werte von 0 bis 4, die den
- folgenden Zeiten entsprechen: 450, 330, 275, 220 und 165 ms.
-
- Der Programmcode des GEM kann folgendermaßen verändert werden:
-
- a) Man installiert beim Booten des Rechners eine Kopie des GEM im
- RAM, die dann vor dem Start des GEM durch ARROWFIX modifiziert
- wird. Dies ist mit einem der folgenden Programme möglich:
-
- ROMRAM TOS Beschleuniger für TTs, >256 KB,
- Mailbox Maus HH2, Freeware, A. Herzlinger, PTOS
- VRAM Virtuelle Speicherverwaltung für TTs, >256 KB,
- OverScan GbR, Berlin, Alexander Herzlinger, VRAM
- ROMSPEED TOS Beschleuniger für TTs (Bestandteil von OUTSIDE
- einer virtuelle Speicherverwaltung für TTs), >256 KB,
- MAXON Verlag, Uwe Seimet, USRS
- GEMRAM GEM im RAM installieren (STs und TTs), 80-120 KB,
- Mailbox Maus MZ, Freeware, Martin Osieka, MOGR
- (Beschreibung, Speicherbedarf, Bezugsquelle, Autor, Cookie)
-
- ARROWFIX gehört in diesem Fall nach diesen Programmen in den
- Ordner \AUTO auf dem Bootlaufwerk und wird somit beim Booten
- automatisch gestartet.
- Die Programme werden nur erkannt, wenn sie das entsprechende
- Cookie im Cookiejar eingetragen haben.
-
- b) Man benutzt ARROWFIX um sich eine modifizierte Kopie des TOS
- zu erstellen, die anschließend in Eproms gebrannt und in den
- Rechner eingesetzt wird. Hierzu ruft man ARROWFIX vom Desktop
- auf und erhält dann die Möglichkeit, das TOS aus den ROMs oder
- einer bereits bestehenden TOS-Datei von Disk zu laden. Nachdem
- ARROWFIX das TOS modifiziert hat, kann es abgespeichert werden.
-
- ARROWFIX unterstützt die folgenden GEM Versionen:
-
- GEM TOS
- 1.40 GER 1.04/1.06/1.62
- 3.00 GER 3.01
- 3.10 GER 2.05/3.05
- 3.20 GER 2.06/3.06
- 3.31 4.01
- 3.40 4.02/4.04
-
- ARROWFIX identifiziert das GEM über die Länge des GEM-TEXT-Segments.
- GEM Versionen anderer Länder werden bei identischer Länge akzeptiert.
-
- KONFIGURATION
- Die Voreinstellung für die Ansprechzeit beträgt 0.375 Sekunden.
- Durch Umbennen des Programms kann man diesen Wert ändern. Hierzu
- ersetzt man das X im Programmnamen durch eine der Ziffern 0 bis 9.
- Dieser Wert multipliziert mit 0.125 Sekunden wird dann von ARROWFIX
- als Voreinstellung benutzt. Besser ist es jedoch die Ansprechzeit
- über das beiliegende Modul ARROWFIX.CPX für das modulare Kontroll-
- feld XCONTROL.ACC einzustellen.
- Hält man beim Start von ARROWFIX die linke SHIFT Taste gedrückt,
- wird nachgefragt, ob ARROWFIX ausgeführt werden soll.
-
- HINWEISE FÜR PROGRAMMIERER
- - das Doppelscrollproblem kann man leicht vermeiden, wenn man
- in seinem evnt_multi()-Aufruf immer auch auf einen Doppel-
- klick wartet: z.B. evnt_multi( MU_BUTTON|..., 2, 1, 1, ...);
- - Programme sollten nicht den Bildschirmmanager kalt stellen,
- in dem sie nach Erhalt einer Scrollmeldung so lange scrollen,
- wie eine Maustaste gedrückt ist. Es gibt auch saubere Methoden
- ein schnelles Scrollen zu implementieren. Z.B. kann man mit
- evnt_multi( MU_TIMER|MU_MESAG, ..., mesag, 0, 0, ...);
- eine eventuell vorliegende Nachricht lesen. Handelt es sich um
- eine Scrollnachricht, verarbeitet man sie sofort (ACHTUNG: Die
- Scrollrichtung kann sich geändert haben) ansonsten stellt man
- sie zurück und wertet sie erst später aus. Es gibt Bibliotheken,
- die hierfür passende Funktionen anbieten, so daß man nicht mit
- globalen Variablen arbeiten muß. Beim Scrollen sollte auch
- regelmäßig die Ausgabekontrolle abgegeben werden, damit andere
- Applikationen zum Zuge kommen.
- - Es ist unbedingt notwendig, beim Verschicken eigener Nachrichten,
- die Überlaenge in mesag[ 2] korrekt zu setzen, da das GEM diesen
- Wert intern zum Kopieren der Nachrichten benutzt.
-
- VEKTOREN, COOKIES, ETC.
- Kann das GEM modifiziert werden, integrieren sich die Patches in den
- bestehenden Programmcode des GEM und ändern daher keine Vektoren.
- Falls das Programm installiert werden muß, werden die Vektoren
- _v_BIOS und _v_AESVDI manipuliert. Die XBRA-Kennung ist MOAF.
-
- BEKANNTE PROBLEME
- - ARROWFIX >= v1.4 muß nach WINX v2.0 gestartet werden. Das gilt
- auch für das Patchen eine TOS-Images.
- - ARROWFIX >= v1.4 kann nicht mit WINX >= v2.1 eingesetzt werden.
- Das ist aber auch nicht notwendig, da die ARROWFIX-Patches ab
- dieser Version in WINX enthalten sind.
- - Bei Programmen, die nach Erhalt einer Scrollnachricht so lange
- scrollen, wie die Maustaste gedrückt ist (und somit den
- Bildschirmmanager kalt stellen), hat die Ansprechzeit keine
- Wirkung. Solche Programme werden auch Schwierigkeiten bekommen,
- falls der Bildschirmmanager einmal erweiterte Scrollfunktion
- anbieten sollte.
- - Bei manchen Kombinationen einer Applikation mit bestimmten
- Accessories wird einem die Verarbeitung der Mausklicks träger
- vorkommen. Tatsächlich ist es aber so, daß die Verarbeitung
- jetzt eine einheitliche Geschwindigkeit hat.
- - Das Abfangen des AES-Traps ist nicht genormt. Aus diesem Grund
- kann die Zusammenarbeit mit anderen Programm scheitern, die
- diesen Vektor ebenfalls ändern.
-
- ÄNDERUNGEN
- v1.5: Programme können kein Rechteckereignis mehr erhalten,
- während einem anderem Programm die Maus zugeordnet ist.
- v1.4: ARROWFIX kann jetzt auch zum Patchen eines GEM im RAM bzw.
- in einem TOS-Image benutzt werden; Die Lösung für das Doppel-
- scrollproblem wurde neu implementiert; Die Ansprechzeit für
- die erste Wiederholung einer Scrollnachricht ist einstellbar;
- Der Verteiler für die Scrollnachrichten im Desktop wurde
- überarbeitet und dadurch auch im GEM 1.40, 3.31 bzw. 3.40
- deutlich schneller.
- v1.3: Fehlerhafte Codeerzeugung des Assemblers korrigiert
- v1.2: ARROWFIX unterstützt nun auch das Programm ROMSPEED
- Es ist jetzt möglich ARROWFIX vom Desktop aufzurufen
-
- COPYRIGHT
- Autor: (\/) Martin Osieka
- Anschrift: Martin Osieka, Erbacherstr. 2,
- 64283 Darmstadt, Bundesrepublik Deutschland
- Internet: Martin_Osieka@mtk.maus.de
-
- Schriftlichen Anfragen bitte immer einen frankierten und
- adressierten Rückumschlag beilegen.
-
- Das Programm ARROWFIX.PRG darf auf beliebige Art und Weise weiter-
- verbreitet werden, solange alle Dateien des Programmpakets
- beiliegen. Zum Paket gehören:
- ARROWFIX.PRG Patchprogramm
- ARROWFIX.GER Dokumentation
- ARROFIX.UPL Upload-Beschreibung
- ARROWFIX.CPX Konfigurationsprogramm
- Die Benutzung des Programms erfolgt auf eigene Gefahr.
-